feat: add support for snowflake merge statements#1887
Merged
manticore-projects merged 3 commits intoJSQLParser:masterfrom Nov 10, 2023
Merged
feat: add support for snowflake merge statements#1887manticore-projects merged 3 commits intoJSQLParser:masterfrom
manticore-projects merged 3 commits intoJSQLParser:masterfrom
Conversation
Adds support for the ON clause of a MERGE statement to be without enclosing parens, as is the convention in Snowflake.
Contributor
Author
|
Thanks for merging @manticore-projects! Do you know when this might be released? |
Contributor
|
This depends fully on @wumpz who is under serious time constraints. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR changes the parser to account for some Snowflake-specific aspects of the
MERGEstatement, namely:ONcondition not being wrapped in parenthesesANDpredicate after theMATCHED/NOT MATCHEDpartSee Snowflake's docs on MERGE: https://docs.snowflake.com/en/sql-reference/sql/merge - the new tests are derived from that doc.
With the
ONlogic, I did the simplest parser change which for existing cases (i.e. with parens), will now result in theonConditionbeing aParenthesiscontaining the expression, where before it would have just been the expression (e.g.EqualsToor whatever) itself. This feels innocuous to me, but if we consider this a breaking change and would prefer to avoid it, I can refactor to ensure full backwards compatibility, perhaps by adding a choice point in the parser and retaining the presence/absence of original parens as a boolean.